/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import java.util.ArrayList;
import java.util.Observable;

/**
 *
 * @author Sebas
 */
public class Caballero extends Observable{
    private String nombre;
    private String descrip;
    private int probaAtacar;
    private ArrayList<Ataque> ataques;
    private ArrayList<Defensa> defensas;
    private int vida;
    private Ataque ataqueActual;
    private Defensa defensaActual;
    private int NumDefensa;
    private String url;
    private int estado;
    public boolean miTurno;
    private boolean ataqueEspecial;
    
    public Caballero(){
        nombre = "";
        descrip = "";
        probaAtacar = 0;
        ataques = new ArrayList();
        defensas = new ArrayList();
        ataqueActual = new Ataque();
        defensaActual = new Defensa();
        vida = 1000;
        url = "";
        NumDefensa = 0;
        ataqueEspecial = false;
        estado = 0;
        
    }
    
    public Caballero(String nom, String desc, int proba, ArrayList ata,ArrayList def,int ndef,int vida, String url, boolean especial,int est){
        nombre = nom;
        descrip = desc;
        probaAtacar = proba;
        ataques = ata;
        defensas = def;
        this.vida = vida;
        this.url = url;
        NumDefensa = ndef;
        ataqueEspecial = especial;
        estado = est;
    }
    
    @Override
    public String toString(){
        return "Nombre: "+this.getNombre();
    }
    
    public void aumentaVida(int vida){
        this.setVida(this.getVida()+vida);
    }
    

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @return the descrip
     */
    public String getDescrip() {
        return descrip;
    }

    /**
     * @return the probaAtacar
     */
    public int getProbaAtacar() {
        return probaAtacar;
    }

    /**
     * @return the ataques
     */
    public ArrayList<Ataque> getAtaques() {
        return ataques;
    }

    /**
     * @return the defensas
     */
    public ArrayList<Defensa> getDefensas() {
        return defensas;
    }

    /**
     * @return the vida
     */
    public int getVida() {
        return vida;
    }

    /**
     * @param vida the vida to set
     */
    public void setVida(int vida) {
        this.vida = vida;
        String message = this.getNombre() + " queda : " + this.vida + " de vida\n"
                + "----------------------";
        setChanged();
        notifyObservers(message);
    }

    /**
     * @return the ataqueActual
     */
    public Ataque getAtaqueActual() {
        return ataqueActual;
    }

    /**
     * @param ataqueActual the ataqueActual to set
     */
    public void setAtaqueActual(Ataque ataqueActual) {
       
        this.ataqueActual = ataqueActual;
        
    }

    /**
     * @return the defensaActual
     */
    public Defensa getDefensaActual() {
        return defensaActual;
    }

    /**
     * @param defensaActual the defensaActual to set
     */
    public void setDefensaActual(Defensa defensaActual) {
        this.defensaActual = defensaActual;
       
    }

    /**
     * @param probaAtacar the probaAtacar to set
     */
    public void setProbaAtacar(int probaAtacar) {
        this.probaAtacar = probaAtacar;
    }

    /**
     * @return the url
     */
    public String getUrl() {
        return url;
    }

    /**
     * @param url the url to set
     */
    public void setUrl(String url) {
        this.url = url;
    }

    /**
     * @return the NumDefensa
     */
    public int getNumDefensa() {
        return NumDefensa;
    }

    /**
     * @return the ataqueEspecial
     */
    public boolean isAtaqueEspecial() {
        return ataqueEspecial;
    }

    /**
     * @param ataqueEspecial the ataqueEspecial to set
     */
    public void setAtaqueEspecial(boolean ataqueEspecial) {
        this.ataqueEspecial = ataqueEspecial;
    }

    /**
     * @return the estado
     */
    public int getEstado() {
        return estado;
    }
    
    
    
}
